#ifndef NAVIGATIONEDGE_H_
#define NAVIGATIONEDGE_H_

#include "Vector2D.h"
#include "NavigationEdgeList.h"
#include "include.h"

class NavigationEdge
{
	Vector2D rightEndPoint;
	Vector2D leftEndPoint;
	
	Vector2D midpoint;
	float length;
	
	NavigationEdgeList * rightEdges;
	NavigationEdgeList * leftEdges;
	
	Locomotion rightToLeft; //should I walk or jump from right to left
	Locomotion leftToRight; //should I walk or jump from left to right
	
	
	 
	char ** behaviorTags; //an array of behaviors that can happen on this edge
	int numTags;
	
	void AddEdge(NavigationEdgeList ** edgeList, NavigationEdge * edge);
	
	public:
	//for use in A*
	float g;
	float h;
	float f;
	NavigationEdge * cameFrom;
	
	NavigationEdge(Vector2D rightEndPoint, Vector2D leftEndPoint, 
					Locomotion rightToLeft, Locomotion leftToRight,
					char ** behaviorTags, int numTags);
	~NavigationEdge();
	void AddLeftEdge(NavigationEdge * edge);
	void AddRightEdge(NavigationEdge * edge);
	Locomotion GetRightToLeft();
	Locomotion GetLeftToRight();
	Vector2D GetLeftEndPoint();
	Vector2D GetRightEndPoint();
	Vector2D GetMidpoint();
	float GetLength();
	NavigationEdgeList * GetRightEdges();
	NavigationEdgeList * GetLeftEdges();
	bool IsTagged(char * tag);
	void Draw();
};
#endif /*NAVIGATIONEDGE_H_*/
